﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain;
using System.Data.SqlClient;
using System.Data;


namespace DataAcess
{
    public class SeccionData
    {
        public String literalConexion;

        public SeccionData(String literalConexion)
        {
            this.literalConexion = literalConexion;
        }

        //Tenemos dos por si es solo una seccion, ya despues con la parte del administrador deberiamos controlar que solo exista solo
        //una imagen de hotel por ahorita lo llamamos por separados, los demas si usan el "GetSecciones"
        public Seccion GetSeccion(int idPagina)
        {
            Hotel hotel = new Hotel();
            Seccion seccion = new Seccion();
            String SqlSelect = "SELECT * FROM Seccion WHERE id_pagina=" + idPagina;
            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmdSelect = new SqlCommand(SqlSelect, conexion);
            conexion.Open();
            SqlDataReader reader = cmdSelect.ExecuteReader();

            while (reader.Read())
            {
                seccion.IdSeccion = reader.GetInt32(0);
                seccion.IdPagina = reader.GetInt32(1);
                seccion.IdImagen = reader.GetInt32(2);
                seccion.Descripcion = reader.GetString(3);
            }
            conexion.Close();
            return seccion;
        }
    
        public LinkedList<Seccion>  GetSecciones(int idPagina)
        {
            Hotel hotel = new Hotel();
            
            String SqlSelect = "SELECT * FROM Seccion WHERE id_pagina=" + idPagina;
            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmdSelect = new SqlCommand(SqlSelect, conexion);
            conexion.Open();
            SqlDataReader reader = cmdSelect.ExecuteReader();
            LinkedList<Seccion> secciones = new LinkedList<Seccion>();
            while (reader.Read())
            {
                Seccion seccion = new Seccion();
                seccion.IdSeccion = reader.GetInt32(0);
                seccion.IdPagina = reader.GetInt32(1);
                seccion.IdImagen = reader.GetInt32(2);
                seccion.Descripcion = reader.GetString(3);
                secciones.AddLast(seccion);
            }
            conexion.Close();
            return secciones;
        }

        

        public byte[] ImagenSeccion(int idSeccion)
        {
            byte[] imagen = null;
            SqlConnection conexion = new SqlConnection(this.literalConexion);
            String sqlSelect = "SELECT imagen "
                                + "FROM Imagen, Seccion "
                                + "WHERE Seccion.id_imagen=Imagen.id_imagen " +
                                    "AND Seccion.id_seccion=" + idSeccion;
            SqlCommand command = new SqlCommand(sqlSelect);
            command.Connection = conexion;
            conexion.Open();
            SqlDataReader sqlDataReader = command.ExecuteReader();
            while (sqlDataReader.Read())
            {
                imagen = (byte[])sqlDataReader.GetSqlBinary(0);
            }
            conexion.Close();
            return imagen;
        }

        public void ActualizarDescripcionSeccion(String descripcion, int idPagina, int idSeccion)
        {
            String sqlConsult = "Update Seccion set descripcion='" + descripcion + " ' where id_seccion=" + idSeccion + " and id_pagina=" + idPagina;
            //String sqlConsult = "Update Seccion set id_imagen=4 where id_seccion=" + 1;
            SqlConnection conexion = new SqlConnection();
            conexion.ConnectionString = literalConexion;

            SqlCommand cmdUpdate = new SqlCommand(sqlConsult, conexion);
            conexion.Open();
            try
            {
                cmdUpdate.ExecuteNonQuery();
            }
            catch (Exception)
            {

                throw;
            }
            conexion.Close();

        }

        public void IngresarSeccion(int idPagina, int idImagen, String descripcion) {

            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "insertar_seccion";
            cmd.Connection = conexion;
            cmd.CommandType = CommandType.StoredProcedure;

            SqlParameterCollection parametros = cmd.Parameters;
            parametros.Add(new SqlParameter("@id_pagina", idPagina));
            parametros.Add(new SqlParameter("@id_imagen", idImagen));
            parametros.Add(new SqlParameter("@descripcion", descripcion));

            conexion.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception)
            { }

            conexion.Close();
        }

        public void EliminarSeccion(int idSeccion) {
            SqlConnection conexion = new SqlConnection(literalConexion);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "eliminar_seccion";
            cmd.Connection = conexion;
            cmd.CommandType = CommandType.StoredProcedure;

            SqlParameterCollection parametros = cmd.Parameters;
            parametros.Add(new SqlParameter("@id_seccion", idSeccion));

            conexion.Open();
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception)
            { }

            conexion.Close();
        }

    }
}
